// 这是一个简单-请求协议，并记录其在日志记录中是如何起作用的。
// 客户机将其日志信息写入命名管道而不是标准错误中，服务器从命名管道中读取并将读取的内容写入文件
// 该程序会读取写入命名管道中的内容，并将其写入到标准输出中
#include <stdio.h>
#include <unistd.h>
#include <string.h>
#include <fcntl.h>
#include <errno.h>
#include <sys/stat.h>
#include "restart.h"

#define FIFO_PERMS (S_IRWXU | S_IWGRP | S_IWOTH)

int main(int argc, char *argv[]) {
    int ret, fd;
    char buf[1024] = {0};
    
    if (argc != 2) {
        fprintf(stderr, "Usage : %s fifoname > logfile", argv[0]);
    }

    // 创建FIFO
    ret = mkfifo(argv[1], FIFO_PERMS);
    if (ret == -1 && errno != EEXIST) {
        perror("server failed to create a FIFO");
        return -1;
    }

    // 打开FIFO的读写操作端
    fd = open(argv[1], O_RDWR);
    if (fd == -1) {
        perror("Server failed to open FIFO");
        return -1;
    }

    // 将读取出的数据写入到log日志文件中
    copyfile(fd, STDOUT_FILENO);

    return 0;
}